// usage-analysis.js
Page({
  data: {
    subscriptions: [],
    analysisData: [],
    loading: false,
    analysisResult: null,
    analysisResultList: [],
    showDetail: false,
    selectedItem: null
  },

  onLoad() {
    this.loadData()
  },

  onShow() {
    this.loadData()
  },

  // 加载数据
  loadData() {
    const subscriptions = wx.getStorageSync('subscriptions') || []
    this.setData({
      subscriptions: subscriptions
    })
    this.generateMockUsageData()
  },

  // 生成模拟使用频率数据
  generateMockUsageData() {
    const subscriptions = this.data.subscriptions
    const analysisData = subscriptions.map(item => {
      // 生成随机使用频率（0-100%）
      const usageRate = Math.floor(Math.random() * 100)
      // 计算月度成本
      const monthlyCost = item.cycle === 'year' ? item.price / 12 : item.price
      // 计算性价比（使用率/成本，越高越好）
      const valueScore = usageRate / monthlyCost
      // 生成使用天数（过去30天）
      const usageDays = Math.floor(usageRate / 100 * 30)
      // 获取状态
      const status = this.getStatus(usageRate, valueScore)
      
      return {
        id: item.id,
        name: item.name,
        price: item.price,
        monthlyCost: monthlyCost,
        monthlyCostText: '¥' + monthlyCost.toFixed(2),
        cycle: item.cycle,
        category: item.category,
        usageRate: usageRate,
        usageDays: usageDays,
        valueScore: valueScore,
        valueScoreText: valueScore.toFixed(2),
        status: status,
        statusText: this.getStatusText(status),
        statusColor: this.getStatusColor(status)
      }
    })

    this.setData({
      analysisData: analysisData
    })
  },

  // 获取状态
  getStatus(usageRate, valueScore) {
    if (usageRate < 30) {
      return 'low' // 低使用率
    } else if (usageRate >= 30 && usageRate < 70) {
      return 'medium' // 中等使用率
    } else {
      return 'high' // 高使用率
    }
  },

  // 调用 AI 分析
  analyzeWithAI() {
    if (this.data.loading) return
    
    this.setData({ loading: true })
    
    const analysisData = this.data.analysisData
    const prompt = this.buildAnalysisPrompt(analysisData)
    
    this.callDeepSeekAPI(prompt).then(result => {
      const resultList = this.formatAnalysisResult(result)
      this.setData({
        analysisResult: result,
        analysisResultList: resultList,
        loading: false
      })
    }).catch(error => {
      console.error('分析失败:', error)
      wx.showToast({
        title: '分析失败，请重试',
        icon: 'none'
      })
      this.setData({ loading: false })
    })
  },

  // 构建分析提示词
  buildAnalysisPrompt(analysisData) {
    // 计算总月度支出
    const totalMonthlyCost = analysisData.reduce((sum, item) => sum + item.monthlyCost, 0)
    const totalYearlyCost = totalMonthlyCost * 12
    
    let prompt = '请从金融和金钱角度分析以下订阅服务的财务状况，重点关注节省金额和投资回报：\n\n'
    
    analysisData.forEach((item, index) => {
      const yearlyCost = item.monthlyCost * 12
      prompt += index + 1 + '. ' + item.name + '\n'
      prompt += '   月度成本：¥' + item.monthlyCost.toFixed(2) + '（年度：¥' + yearlyCost.toFixed(2) + '）\n'
      prompt += '   使用频率：' + item.usageRate + '%\n'
      prompt += '   过去30天使用：' + item.usageDays + '天\n'
      prompt += '   性价比评分：' + item.valueScore.toFixed(2) + '\n\n'
    })
    
    prompt += '当前总月度支出：¥' + totalMonthlyCost.toFixed(2) + '，年度支出：¥' + totalYearlyCost.toFixed(2) + '\n\n'
    
    prompt += '请从金融理财角度给出分析，必须包含以下内容：\n'
    prompt += '1. 计算可以节省的具体金额（月度/年度），例如"取消XX服务可节省¥XX/月，年度节省¥XX"\n'
    prompt += '2. 分析哪些服务是浪费金钱的，给出具体的浪费金额\n'
    prompt += '3. 计算优化后的月度/年度总支出，对比优化前后的金额差异\n'
    prompt += '4. 从投资回报率角度分析，哪些服务值得保留（使用频率高且成本合理）\n'
    prompt += '5. 给出具体的财务优化方案和预期节省金额\n'
    prompt += '回答要求：\n'
    prompt += '- 必须包含具体的金钱数字（¥符号和金额）\n'
    prompt += '- 重点强调节省金额和财务优化\n'
    prompt += '- 不要使用星号、井号等特殊符号\n'
    prompt += '- 使用换行来分段，每个建议单独一段\n'
    prompt += '- 回答要简洁实用，控制在250字以内\n'
    
    return prompt
  },

  // 调用 DeepSeek API
  callDeepSeekAPI(prompt) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: 'https://api.deepseek.com/v1/chat/completions',
        method: 'POST',
        header: {
          'Content-Type': 'application/json',
          'Authorization': 'Bearer sk-68587461c88d4e1ab52f51fde28805ae'
        },
        data: {
          model: 'deepseek-chat',
          messages: [
            {
              role: 'user',
              content: prompt
            }
          ],
          temperature: 0.7,
          max_tokens: 500
        },
        success: (res) => {
          if (res.statusCode === 200 && res.data && res.data.choices && res.data.choices.length > 0) {
            const content = res.data.choices[0].message.content
            resolve(content)
          } else {
            reject(new Error('API 返回数据格式错误'))
          }
        },
        fail: (err) => {
          reject(err)
        }
      })
    })
  },

  // 查看详情
  showDetail(e) {
    const index = e.currentTarget.dataset.index
    const item = this.data.analysisData[index]
    this.setData({
      showDetail: true,
      selectedItem: item
    })
  },

  // 关闭详情
  closeDetail() {
    this.setData({
      showDetail: false,
      selectedItem: null
    })
  },

  // 格式化百分比
  formatPercent(value) {
    return value.toFixed(0) + '%'
  },

  // 格式化金额
  formatPrice(value) {
    return '¥' + value.toFixed(2)
  },

  // 获取状态文本
  getStatusText(status) {
    const texts = {
      low: '低使用',
      medium: '中等',
      high: '高频'
    }
    return texts[status] || '未知'
  },

  // 获取状态颜色
  getStatusColor(status) {
    const colors = {
      low: '#EF4444',
      medium: '#F59E0B',
      high: '#10B981'
    }
    return colors[status] || '#6B7280'
  },

  // 格式化分析结果
  formatAnalysisResult(content) {
    // 移除特殊符号
    content = content.replace(/[*#]/g, '')
    // 按换行分割，过滤空行
    const lines = content.split('\n').filter(line => line.trim().length > 0)
    return lines
  },

  // 阻止事件冒泡
  stopPropagation() {
    // 空函数，用于阻止事件冒泡
  }
})
